#!/usr/bin/env python
# -*- coding:utf-8 -*-


# Desenvolvedor: Luis Leonardo de Jesus Silva
# Monitor: Allysson David Amaral de Melo


import pygame.mixer
import pygtk
pygtk.require('2.0')
import gtk
import random

# ==> comeca lista de niveis

niveis = [
        # comeca dicionario de perguntas nivel 1 (indice 0)
    {
        0: ("Foi introduzido na agricultura brasileira em 1727, sendo uma bebida muito apreciada.", "Café", "Leite de Cabra", "Chá", "Café", "Chimarrão"),
        1: ("Qual o valor de PI?", "3.14", "6.28", "3.18", "2.71", "3.14"),
        2: ("Liberdade do estado de escravidão:", "Alforria", "Oforria", "Halforria", "Auforria", "Alforria"),
        3: ("Fábrica de tecidos de algodão:", "Cotonofício", "Cotonofício", "Tecelagem", "Algodoaria", "Algodolofia"),
        4: ("NÃO é uma das bases do DNA?", "Mitocôndrias", "Timina", "Mitocôndrias", "Adenina", "Citosina"),
        5: ("Laje saliente na fachada dos edifícios:", "Marquize", "Toldo", "Marquize", "Parapeito", "Proteção Angular"),
        6: ("Qual era o número de QI de Isaac Newton?", "195", "120", "195", "155", "205"),
        7: ("Quem foi o inventor do barômetro?", "Evangelista Torricelli", "Evangelista Torricelli", "Max Planck", "Valdemar Poulsen", "Benoit Fourneyron")
    },
        # termina dicionario de perguntas nivel 1
        
        # comeca dicionario de perguntas nivel 2 (indice 1)
    {
        0: ("O equivalente a 1 hectare:", "10.000 metros quadrados", "10.000 metros quadrados", "100.000 metros quadrados", "1.000 metros quadrados", "100 metros quadrados"),
        1: ("Nome comum de todos os insetos da ordem dos Sifonápteros.", "Pulga", "Percevejo", "Mosca", "Barata", "Pulga"),
        2: ("Alfred Nobel foi...", "Industrial do ramo bélico", "Político americano", "Famoso cientista sueco", "Industrial do ramo bélico", "Descobridor da fusão eletroestática"),
        3: ("Vegetação rasteira encontrada próximo às regiões polares.", "Tundra", "Tundra", "Coníferas", "Campos", "Gramíneas"),
        4: ("Número pertencente à seqüência 2, 4, 8, 16, 32, 64...", "4096", "254", "4096", "132", "2048"),
        5: ("Uma das Rodovias Amazônicas, foi Iniciada em 1970 e interrompida em 1974.", "Transamazônica", "Rodovia Transcontinental Amazônica", "Route Amazonas", "Transamazônica", "Via Amazônica"),
        6: ("Qual a nacionalidade do inventor do rádio, Guglielmo Marconi?", "Italiano", "Amerincano", "Francês", "Italiano", "Alemão"),
        7: ("Em que ano foi inventado o CD?", "1982", "1977", "1995", "1991", "1982")
    },
        # termina dicionario de perguntas nivel 2

        # começa dicionário de nivel 3

    {
        0: ("O Teatro Amazonas localizado na cidade de Manaus foi inaugurado em:", "1896", "1696", "1896", "1796", "1976"),
        1: ("Adolf Hittler era...", "Austríaco", "Alemão", "Islâmico", "Austríaco", "Russo"),
        2: ("O que são leucócitos?", "Glóbulos Brancos", "Glóbulos Brancos", "Organização vinculada ao MST", "Um  chipset recém-lançado", "Veias especiais responsáveis pelo transporte do sangue"),
        3: ("Sobre os olhos, é correto afirmar que:", "A íris controla a entrada de luz e dá cor dos olhos", "O cristalino reflete a luz que penetra nos olhos", "A íris controla a entrada de luz e dá cor dos olhos", "A retina é a parte branca dos olhos, protegendo-os da poeira", "Os músculos ciliares mantêm o cristalino rígido, facilitando uma boa visão"),
        4: ("Identifique a única alternativa correta relacionada a prejuízo causado pela falta de manejo sustentável em florestas.", "A ameaça à própria vida humana", "O aumento da biodiversidade", "O estímulo a assentamentos legalizados", "O equilíbrio das mudanças climáticas", "A ameaça à própria vida humana"),
        5: ("Os modelos de Revolução Burguesa que ocorreram na Europa entre os séculos XVII e XIX, apresentam como ponto comum:", "o fim dos regimes monárquicos absolutistas", "o reconhecimento das igualdades social e civil", "a total ruptura dos padrões do antigo regime", "a instalação do regime republicano parlamentar", "o fim dos regimes monárquicos absolutistas"),
        6: ("O óxido nitroso é classificado quimicamente como um:", "Óxido neutro", "Óxido ácido", "Óxido báxico", "Óxido anfótero", "Óxido neutro"),
        7: ("Como ficou conhecida a bomba nuclear que atingiu a cidade de Nagasaki?", "Fat Man", "Atomic Bomb", "Little Boy", "Fat Man", "Destruction City")
    }
        ]
#encerra lista de niveis


#  PERGUNTA DO MILHAO ==
milhao =    {
    0: ("Das funções que a água desempenha no citosol, é INCORRETO afirmar:", "Catalisa reações químicas", "Participa no equilíbrio osmótico", "Participa de reações de hidrólise", "Catalisa reações químicas", "Participa no transporte de moléculas"),
    1: ("São princípios fundamentais do liberalismo econômico no século XVIII, EXCETO:", "defesa da propriedade coletiva", "combate ao mercantilismo", "livre concorrência e livre cambismo", "defesa da propriedade coletiva", "liberdade de contrato")
            }
class Perguntas:
    def end(self, widget, data=None):
        # encerra o gtk
        gtk.main_quit()
        return False
    def close_application(self, widget, data=None):
        global parou
    
        # esconde a janela
        self.window.destroy()
        # encerra o gtk
        gtk.main_quit()
        # verifica se parou
        if(data == "parar"):
            parou = True
        main()
        # volta pra criacao da pergunta
        return False

    def escolher(self, widget, data=None):
        #muda a resposta escolhida pelo usuario
        self.resposta = data

    def responder(self, widget, data=None):
        #checa se o usuario respondeu direito
        global corretas
        global dificuldade
        global errou
        
        if(self.resposta == self.correta):
            corretas = corretas + 1
            if(corretas % 5 == 0):
                dificuldade = dificuldade + 1
        else:
            errou = True
        
        self.close_application(widget, data)

    def pular(self, widget, data=None):
        global pulo
        if(pulo > 0):
            pulo = pulo - 1
            self.close_application(widget, data)

    # sempre comeca com "self", depois vem os parametros passados la embaixo
    def __init__(self, tuplaPergunta):
        pergunta = tuplaPergunta[0]
        resp = tuplaPergunta[1]
        op1 = tuplaPergunta[2]
        op2 = tuplaPergunta[3]
        op3 = tuplaPergunta[4]
        op4 = tuplaPergunta[5]
        
        self.acertou = False
        
        #define qual a resposta atual
        self.resposta = "Vazio"
        #armazena a resposta correta que foi passada por parametro
        self.correta = resp


        # cria uma janela
        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.window.set_position(gtk.WIN_POS_CENTER)
        # define o titulo
        self.window.set_title("Quiz Show")
        # conecta o evento "delete_event" (quando fecha a janela) para o metodo "end"
        self.window.connect("delete_event", self.end)

        # cria uma caixa vertical
        caixa1 = gtk.VBox(False, 0)
        caixa1.show()

        # caixa que aloca a pergunta
        caixaAjudante = gtk.VBox(False, 0)
        caixaAjudante.set_border_width(20)
        caixaAjudante.show()
        caixa1.pack_start(caixaAjudante, True, True, 0)

        # label responsavel por exibir a pergunta
        labelPergunta = gtk.Label(pergunta)
        labelPergunta.show()
        caixaAjudante.pack_start(labelPergunta, True, True, 0)

        # um separador horizontal para a caixa
        separator = gtk.HSeparator()
        separator.show()
        caixa1.pack_start(separator, False, True, 0)

        # primeira resposta
        vazio = gtk.RadioButton(None, "Vazio")

        caixaAjudante = gtk.VBox(False, 0)
        caixaAjudante.set_border_width(20)
        caixaAjudante.show()
        caixa1.pack_start(caixaAjudante, True, True, 0)


        # cria a primeira alternativa para a pergunta
        opcao = gtk.RadioButton(vazio, op1)
        # conecta a escolha com a opcao 
        opcao.connect("toggled", self.escolher, op1)
        # mostra a alternativa 
        opcao.show()
        # anexa a alternativa em "caixaAjudante"
        caixaAjudante.pack_start(opcao, True, True, 5)

        opcao = gtk.RadioButton(vazio, op2)
        opcao.connect("toggled", self.escolher, op2)
        opcao.show()
        caixaAjudante.pack_start(opcao, True, True, 5)

        opcao = gtk.RadioButton(vazio, op3)
        opcao.connect("toggled", self.escolher, op3)
        opcao.show()
        caixaAjudante.pack_start(opcao, True, True, 5)

        opcao = gtk.RadioButton(vazio, op4)
        opcao.connect("toggled", self.escolher, op4)
        opcao.show()
        caixaAjudante.pack_start(opcao, True, True, 5)

        # caixa onde estao alocadas as alternativas e a imagem
        caixa2 = gtk.HBox(False, 0)
        caixa2.show()
        caixa2.pack_start(caixa1, True, True, 0)

        # um separador vertical para a caixa
        separator = gtk.VSeparator()
        separator.show()
        caixa2.pack_start(separator, False, True, 0)


        allocation = caixa2.get_allocation()
        desired_width = allocation.width
        desired_height = allocation.height
        

        # comando para anexar a imagem
        pix = gtk.gdk.pixbuf_new_from_file("Interrogacao3.JPG")
        self.imagem = gtk.image_new_from_pixbuf(pix)
        self.imagem.show()
        caixa2.pack_start(self.imagem, True, True, 0)


        # caixa com os botoes de acesso
        caixa3 = gtk.HBox(False, 10)
        caixa3.show()


        # cria o botao "responder"
        botao = gtk.Button("Responder")
        #botao.add(self.image007)
        botao.connect("clicked", self.responder)
        botao.show()
        caixa3.pack_start(botao, True, True, 0)

        global pulo
        # serve para decrementar as possibilidades de pulos do usuario
        if(pulo > 0):
            #botao "Pular"
            strPular = "Pular (" + str(pulo) + ")"
            botao = gtk.Button(strPular)
            botao.connect("clicked", self.pular)
            botao.show()
            caixa3.pack_start(botao, True, True, 0)


        # cria o botao "sair"
        botao = gtk.Button("Parar")
        botao.connect("clicked", self.close_application, "parar")
        botao.show()
        caixa3.pack_start(botao, True, True, 0)

        # caixa que comporta o placar
        caixa5 = gtk.HBox(False, 10)
        caixa5.show()

        strParar = "Parar: R$ " + str(premios[corretas])
        label = gtk.Label(strParar)
        label.show()
        caixa5.pack_start(label)

        strErrar = "Errar: R$ " + str(premios[corretas]/2)
        label = gtk.Label(strErrar)
        label.show()
        caixa5.pack_start(label)

        # caixa que comporta a janela principal
        caixa4 = gtk.VBox(False, 0)
        caixa4.show()
        caixa4.pack_start(caixa2, True, True, 0)
                
        # separador horizontal para a caixa
        separator = gtk.HSeparator()
        separator.show()
        caixa4.pack_start(separator, False, True, 0)
        
        caixa4.pack_start(caixa3, False, False, 0)
        caixa4.pack_start(caixa5, False, False, 0)
            
        # exibe a janela principal
        self.window.add(caixa4)
        self.window.show()



def main():
    if(parou):
        print "Voce parou! Acertou apenas %d perguntas, ganhou R$ %d,00" % (corretas, premios[corretas])
    elif(errou):
        print "Voce errou! Que pena! Acertou apenas %d perguntas, ganhou R$ %d,00" % (corretas, premios[corretas]/2)
    else:
        if(corretas == questao_milhao):
            print "Pergunta do milhao"
            # adicione aqui uma pergunta e encerra
            sorteio = random.choice
            resultado = sorteio(milhao.keys())
            while(not milhao.has_key(resultado) == True):
                resultado = sorteio(niveis[nivel].keys())
            Perguntas(milhao.pop(resultado))
        elif(corretas < questao_milhao):
            # cria a pergunta, passando os parametros recebidos na classenivel = int(corretas/5)
            nivel = int(corretas/5)
            if(len(niveis[nivel]) == 0):
                print "Dicionario vazio"
            else:
                sorteio = random.choice
                resultado = sorteio(niveis[nivel].keys())
                while(not niveis[nivel].has_key(resultado) == True):
                    resultado = sorteio(niveis[nivel].keys())
                Perguntas(niveis[nivel].pop(resultado))
        else:
            print "Acabou! Voce venceu!"
            return 0
        # Toca o audio da variavel "sound"
        sound.play()
        # inicia o gtk
        gtk.main()
    return 0

# comeca aqui
if __name__ == "__main__":
    # conta quantas perguntas o usuario respondeu corretamente
    corretas = 0
    # seleciona o nivel de dificuldade das perguntas
    dificuldade = 1
    # limita a "3" vezes a opcao de "pular" do usuario => CASO O USUARIO USE OS 3 PULOS, O BOTAO "PULAR" NAO SERA MAIS EXIBIDO
    pulo = 3
    # verifica se o usuario errou a resposta
    errou = False
    # verifica se o usuario parou
    parou = False
    # lista de premios
    premios = [0, 1000, 2000, 3000, 4000, 5000, 10000, 20000, 30000, 40000, 50000, 100000, 200000, 300000, 400000, 500000]
    # qual a questao do milhao
    questao_milhao = 15
    
    pygame.mixer.init(44100, -16, 2, 2014)
    sound = pygame.mixer.Sound("Speech On.wav")
    
    # inicia o "main"
    main()
